package com.congee02.sw.var;

import java.util.*;

public class MaximumLengthSubstring {

    public int maximumLengthSubstring(String s) {
        return maximumLengthSubstring(s.toCharArray());
    }

    private int maximumLengthSubstring(char[] cs) {

        int n = cs.length;

        int[] cnt = new int[128];

        cnt[cs[0]] ++;
        int ans = 1;

        int l = 0;
        for (int r = 1 ; r < n ; r ++ ) {
            cnt[cs[r]] ++;
            // 因为每次循环后都有矫正的过程
            // 所以不合法的情况通常是由新加入的元素触发的
            while (cnt[cs[r]] > 2) {
                cnt[cs[l ++]] --;
            }
            ans = Math.max(ans, r - l + 1);
        }

        return ans;
    }

}
